package ch.ebnoether.controller;

import java.awt.Color;
import java.awt.event.MouseEvent;

import javax.swing.JTextField;

import ch.ebnoether.gui.WinnerCardRight;
import ch.ebnoether.gui.YatzyGUI;
import ch.ebnoether.wuerfel.Dice;

public class YatzyController extends MasterController implements YatzyConstants {

  private Dice[] dices;
  private WinnerCardRight rechts;
  private boolean yatzyGesetzt;
  private int yatzySumme;
  private YatzyGUI yatzi;

  public YatzyController(Dice[] dices, WinnerCardRight rechts, YatzyGUI yatzi) {
    super(dices, yatzi);
    this.dices = dices;
    this.rechts = rechts;
    this.yatzi = yatzi;
    this.yatzyGesetzt = false;
    this.yatzySumme = 0;
  }

  /*
     * (non-Javadoc)
     *
     * @see
     * ch.ebnoether.controller.ControllerRechts#mouseClicked(java.awt.event.
     * MouseEvent)
     */
  @Override
  public void mouseClicked(MouseEvent e) {
    Object o = e.getSource();
    JTextField t = (JTextField) o;

    if (!this.yatzyGesetzt && MasterController.setzbar) {

      t.setText("" + ControllerLogik.yatzyBerechnen(this.dices));
      ControllerLogik.setTotalRechts(this.rechts, Integer.valueOf(t.getText()));
      this.yatzySumme = ControllerLogik.yatzyBerechnen(this.dices);
      super.mouseClicked(e);
      this.yatzyGesetzt = true;

    } else if (this.yatzyGesetzt && MasterController.setzbar && ControllerLogik.yatzyBerechnen(this.dices) == YATZY && this.yatzySumme > 0) {
      t.setText("" + (this.yatzySumme + YATZYBONUS));
      this.yatzySumme += 100;
      ControllerLogik.setTotalRechts(this.rechts, YATZYBONUS);
      t.setBackground(Color.LIGHT_GRAY);
      t.setForeground(Color.WHITE);
      super.setGesetzt(true);
      // YatzyGUI.felderBelegt++;
      this.yatzi.diceButtonOff();
      this.yatzi.checkFinish();
      YatzyGUI.anzahlWuerfe = 0;
      for (int i = 0; i < 5; i++) {
        this.dices[i].zuruecksetzen();
      }
      setzbar = false;
      this.yatzi.diceButtonOn();
      this.yatzi.repaint();
    }
  }

  /*
     * (non-Javadoc)
     *
     * @see
     * ch.ebnoether.controller.ControllerRechts#mouseEntered(java.awt.event.
     * MouseEvent)
     */
  @Override
  public void mouseEntered(MouseEvent e) {
    Object o = e.getSource();
    JTextField t = (JTextField) o;

    if (!this.yatzyGesetzt && MasterController.setzbar) {
      t.setText("" + ControllerLogik.yatzyBerechnen(this.dices));

    } else if (this.yatzyGesetzt && MasterController.setzbar && ControllerLogik.yatzyBerechnen(this.dices) == YATZY && this.yatzySumme > 0) {
      t.setText("" + (this.yatzySumme + YATZYBONUS));
    }
  }

  @Override
  public void mouseExited(MouseEvent e) {
    Object o = e.getSource();
    JTextField t = (JTextField) o;

    if (!this.yatzyGesetzt && MasterController.setzbar) {
      t.setText("");

    } else if (this.yatzyGesetzt && MasterController.setzbar
            && ControllerLogik.yatzyBerechnen(this.dices) == YATZY) {

      t.setText("" + this.yatzySumme);
    }
  }
}
